import random

user_lib = {
    12345678:{"姓名":"jack","密码":852415,"地址":"中国河南省郑州市枫杨街道232号","余额":200000,"开户行":"中国工商银行"},
    45678978:{"姓名":"Bob","密码":856555,"地址":"中国河南省郑州市枫杨街道81号","余额":200000,"开户行":"中国工商银行"},
    12378945:{"姓名":"Alice","密码":245235,"地址":"中国河南省郑州市枫杨街道12号","余额":200000,"开户行":"中国工商银行"},
    78996321:{"姓名":"Helon","密码":985542,"地址":"中国河南省郑州市枫杨街道78号","余额":200000,"开户行":"中国工商银行"}
}

# 添加用户
def add_user_func(account,name,passwd,address,name_of_bank):
    if len(user_lib) == 100:
        return 3
    if account in user_lib.keys():
        return 2
    info_dir = {}
    info_dir["姓名"] = name
    info_dir["密码"] = passwd
    info_dir["地址"] = address
    info_dir["开户行"] = name_of_bank
    info_dir["余额"] = 0
    user_lib[account] = info_dir
    print(f"您的账户位：{account}")
    return 1

# 存钱
def save_money_func(account,save_money):
    if account not in user_lib.keys():
        # print(user_lib.keys())
        print("不存在这样的账户")
        return False
    else:
        user_lib[account]["余额"] += save_money

#取钱
def get_money_func(account,passwd,get_money):
    if account not in user_lib.keys():
        print("不存在这样的账户")
        return False
    if user_lib[account]["密码"] != passwd :
        print("密码错误")
        return False

    if get_money > user_lib[account]["余额"]:
        print("余额不够户")
        return False
    user_lib[account]["余额"] -= get_money

# 转账
def tranmision_money_func(out_account,in_account,out_passwd,out_money):
    if out_account not in user_lib.keys() or in_account not in user_lib.keys():
        print("不存在这样的账户")
        return False
    if out_passwd != user_lib[out_account]["密码"]:
        print("密码错误")
        return False
    if out_money > user_lib[out_account]["余额"]:
        print("余额不足")
        return False
    user_lib[out_account]["余额"] -= out_money
    user_lib[in_account]["余额"] += out_money


# 查询账户功能
def select_account_func(account,passwd):
    if account not in user_lib.keys():
        print("该用户不存在")
        return None
    if passwd != user_lib[account]["密码"]:
        print("密码输入错误")
        return None
    print("当前账号：{0},密码:{1},余额：{2}元，用户居住地址：{3}，当前账户的开户行：{4}.".format(account,passwd,user_lib[account]["余额"],user_lib[account]["地址"],user_lib[account]["开户行"]))


if __name__ == '__main__':
    flag = 1
    while flag:
        print('''
            ********************************************************
            ******              中国工商银行               ***********
            ******              账户管理系统               ***********
            ******                 v1.0                  ***********
            ********************************************************

            *1.开户
            *2.存钱
            *3.取钱
            *4.转账
            *5.查询
            *6.Bye！
            ******************************************************** 
        ''')


        choice = int(input("请按照上面输入你的选项\n"))
        if choice == 1:
            account = random.randint(10000000,99999999)
            name = input("请输入您的姓名:")
            passwd = input("请输入您的密码(6位数字):")
            address = input("请输入你的地址:")
            bank = input("请输入你开户行:")
            add_user_func(account,name,passwd,address,bank)
        if choice == 2:
            account = int(input("请输入你的账户:"))
            save_money = int(input("请输入你要存入的钱"))
            save_money_func(account,save_money)
        if choice == 3:
            account = int(input("请输入你的账户:"))
            passwd = input("请输入你的密码:")
            get_money = int(input("请输入你要取钱的数量:"))
            get_money_func(account,passwd,get_money)
        if choice == 4:
            out_account = int(input("请输入你的取出账户:"))
            out_account_passwd = input("请输入您的取出账户的密码:")
            in_account = int(input("请输入你的存入账户:"))
            out_money = int(input("请输入你转出的钱的数量"))
            tranmision_money_func(out_account,in_account,out_account_passwd,out_money)
        if choice == 5:
            account = int(input("请输入你的账户:"))
            passwd = input("请输入您的密码:")
            select_account_func(account,passwd)
        if input("是否还要继续操作yes/no") == "yes":
            flag = True
        else:
            flag = False